function trim(value) {
	return value.replace(/^\s+|\s+$/g,'');
}
function ltrim(value) {
	return value.replace(/^\s+/,'');
}
function rtrim(value) {
	return value.replace(/\s+$/,'');
}

function isEmpty(field, msg) {
	var label = $('#' + field.id + 'Label');
	var error = $('#' + field.id + 'Error');
	if (!field || !field.value || field.value == null || field.value == "") {
		label.addClass('error');
		error.val(msg).show();
		return true;
	} 
	label.removeClass('error');
	error.val('').hide();
	return false;	
}

function isStringEmpty(field, msg) {
	var label = $('#' + field.id + 'Label');
	var error = $('#' + field.id + 'Error');
	if (!field || !field.value || field.value == null || field.value == '' || trim(field.value).length == 0) {
		label.addClass('error');
		error.val(msg).show();
		return true;
	} 
	label.removeClass('error');
	error.val('').hide();
	return false;
}

function isStringInRange(field, msg, minLength, maxLength, trimString) {
	var label = $('#' + field.id + 'Label');
	var error = $('#' + field.id + 'Error');
	if (!field || !field.value || field.value == null) {
		label.addClass('error');
		error.val(msg).show();
		return false;
	}
	var value = field.value;
	if (trimString && trimString == true) {
		value = trim(field.value);
	}
	if ((minLength > -1 && minLength > value.length) || (maxLength > -1 && maxLength < value.length)) {
		label.addClass('error');
		error.val(msg).show();
		return false;
	}
	label.removeClass('error');
	error.val('').hide();
	return true;
}

function isIntInRange(field, msg, minLength, maxLength) {
	var label = $('#' + field.id + 'Label');
	var error = $('#' + field.id + 'Error');
	if (!field || !field.value || field.value == null) {
		label.addClass('error');
		error.val(msg).show();
		return false;
	}
	if (minLength != null && parseInt(field.value) < minLength) {
		label.addClass('error');
		error.val(msg).show();
		return false;
	}
	if (maxLength != null && parseInt(field.value) > maxLength) {
		label.addClass('error');
		error.val(msg).show();
		return false;
	}
	label.removeClass('error');
	error.val('').hide();
	return true;
}

function isFloatInRange(field, msg, minLength, maxLength) {
	var label = $('#' + field.id + 'Label');
	var error = $('#' + field.id + 'Error');
	if (!field || !field.value || field.value == null) {
		label.addClass('error');
		error.val(msg).show();
		return false;
	}
	if (minLength != null && parseFloat(field.value) < minLength) {
		label.addClass('error');
		error.val(msg).show();
		return false;
	}
	if (maxLength != null && parseFloat(field.value) > maxLength) {
		label.addClass('error');
		error.val(msg).show();
		return false;
	}
	label.removeClass('error');
	error.val('').hide();
	return true;
}

function isFloatInRangeEx(field, msg, minLength, maxLength) {
	var label = $('#' + field.id + 'Label');
	var error = $('#' + field.id + 'Error');
	if (!field || !field.value || field.value == null) {
		label.addClass('error');
		error.val(msg).show();
		return false;
	}
	if (minLength != null && parseFloat(field.value) <= minLength) {
		label.addClass('error');
		error.val(msg).show();
		return false;
	}
	if (maxLength != null && parseFloat(field.value) >= maxLength) {
		label.addClass('error');
		error.val(msg).show();
		return false;
	}
	label.removeClass('error');
	error.val('').hide();
	return true;
}

function matchesRegEx(field, msg, regex) {
	var label = $('#' + field.id + 'Label');
	var error = $('#' + field.id + 'Error');
	if (field && field.value && field.value != null && !field.value.match(regex)) {
		label.addClass('error');
		error.val(msg).show();
		return false;
	} 
	label.removeClass('error');
	error.val('').hide();
	return true;	
}

function isEmail(field, msg) {
	var label = $('#' + field.id + 'Label');
	var error = $('#' + field.id + 'Error');
	var filter = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
	if (field && field.value && field.value != null && !filter.test(field.value)) {
		label.addClass('error');
		error.val(msg).show();
		return false;
	}
	label.removeClass('error');
	error.val('').hide();
	return true;
}

function isUrl(field, msg) {
	var label = $('#' + field.id + 'Label');
	var error = $('#' + field.id + 'Error');
	var filter = /(^(ftp|http|https):\/\/(\.[_A-Za-z0-9-]+)*(@?([A-Za-z0-9-])+)?(\.[A-Za-z0-9-]+)*((\.[A-Za-z0-9]{2,})|(\.[A-Za-z0-9]{2,}\.[A-Za-z0-9]{2,}))(:[0-9]+)?([\/A-Za-z0-9?#_-]*)?$)/gi;
	if (field && field.value && field.value != null && !filter.test(field.value)) {
		label.addClass('error');
		error.val(msg).show();
		return false;
	}
	label.removeClass('error');
	error.val('').hide();
	return true;
}

